<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.3.1"/>
<title>Open Event Machine API: event_machine.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Open Event Machine API
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.3.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('event__machine_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">event_machine.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Event Machine API v1.0.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;<a class="el" href="event__machine__types_8h_source.html">event_machine_types.h</a>&gt;</code><br/>
<code>#include &lt;event_machine_hw_types.h&gt;</code><br/>
<code>#include &lt;event_machine_hw_specific.h&gt;</code><br/>
</div><div class="textblock"><div class="dynheader">
Include dependency graph for event_machine.h:</div>
<div class="dyncontent">
<div class="center"><img src="event__machine_8h__incl.png" border="0" usemap="#event__machine_8h" alt=""/></div>
<map name="event__machine_8h" id="event__machine_8h">
<area shape="rect" id="node3" href="event__machine__types_8h.html" title="Event Machine basic types." alt="" coords="103,83,257,111"/></map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="event__machine_8h__dep__incl.png" border="0" usemap="#event__machine_8hdep" alt=""/></div>
<map name="event__machine_8hdep" id="event__machine_8hdep">
<area shape="rect" id="node3" href="event__machine__core__mask_8h.html" title="Event Machine core mask functions." alt="" coords="5,83,147,127"/><area shape="rect" id="node5" href="event__machine__helper_8h.html" title="Event Machine helper functions and macros." alt="" coords="49,177,209,205"/><area shape="rect" id="node7" href="event__machine__group_8h.html" title="Event Machine optional fork&#45;join helper." alt="" coords="221,91,379,119"/></map>
</div>
</div>
<p><a href="event__machine_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structem__notif__t.html">em_notif_t</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Event.  <a href="structem__notif__t.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a07c497e9f8ae9053547af50c62cce153"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a07c497e9f8ae9053547af50c62cce153">EM_API_VERSION_MAJOR</a>&#160;&#160;&#160;1</td></tr>
<tr class="memdesc:a07c497e9f8ae9053547af50c62cce153"><td class="mdescLeft">&#160;</td><td class="mdescRight">Major API version number.  <a href="#a07c497e9f8ae9053547af50c62cce153">More...</a><br/></td></tr>
<tr class="separator:a07c497e9f8ae9053547af50c62cce153"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22170090d4e6faac09b474d39e6f07b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a22170090d4e6faac09b474d39e6f07b1">EM_API_VERSION_MINOR</a>&#160;&#160;&#160;0</td></tr>
<tr class="memdesc:a22170090d4e6faac09b474d39e6f07b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Minor API version number.  <a href="#a22170090d4e6faac09b474d39e6f07b1">More...</a><br/></td></tr>
<tr class="separator:a22170090d4e6faac09b474d39e6f07b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:af132a04504b399fd5f59521f4f16306f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f">em_receive_func_t</a> )(void *eo_ctx, em_event_t event, <a class="el" href="event__machine__types_8h.html#a2f5b3fb43add8103da34b52cc1d0f2cc">em_event_type_t</a> type, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, void *q_ctx)</td></tr>
<tr class="memdesc:af132a04504b399fd5f59521f4f16306f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Receive event.  <a href="#af132a04504b399fd5f59521f4f16306f">More...</a><br/></td></tr>
<tr class="separator:af132a04504b399fd5f59521f4f16306f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6c4b00c8090f4ef144d8b83c0474dbf"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ac6c4b00c8090f4ef144d8b83c0474dbf">em_start_func_t</a> )(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:ac6c4b00c8090f4ef144d8b83c0474dbf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution object start, global.  <a href="#ac6c4b00c8090f4ef144d8b83c0474dbf">More...</a><br/></td></tr>
<tr class="separator:ac6c4b00c8090f4ef144d8b83c0474dbf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77d089f1612b0322a4afea9251019576"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a77d089f1612b0322a4afea9251019576">em_start_local_func_t</a> )(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:a77d089f1612b0322a4afea9251019576"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution object start, core local.  <a href="#a77d089f1612b0322a4afea9251019576">More...</a><br/></td></tr>
<tr class="separator:a77d089f1612b0322a4afea9251019576"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad402338b2b52bff31bd84ba7b4e1434c"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ad402338b2b52bff31bd84ba7b4e1434c">em_stop_local_func_t</a> )(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:ad402338b2b52bff31bd84ba7b4e1434c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution object stop, core local.  <a href="#ad402338b2b52bff31bd84ba7b4e1434c">More...</a><br/></td></tr>
<tr class="separator:ad402338b2b52bff31bd84ba7b4e1434c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0057112dd786c5f667bf42a424679c89"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a0057112dd786c5f667bf42a424679c89">em_stop_func_t</a> )(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:a0057112dd786c5f667bf42a424679c89"><td class="mdescLeft">&#160;</td><td class="mdescRight">Execution object stop, global.  <a href="#a0057112dd786c5f667bf42a424679c89">More...</a><br/></td></tr>
<tr class="separator:a0057112dd786c5f667bf42a424679c89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41d418a82bfc4e80f7ad5ae73d5a4bd9"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9">em_error_handler_t</a> )(<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> error, <a class="el" href="event__machine__types_8h.html#a5b0a5fb6ffe7f0fdb90caa388070dff3">em_escope_t</a> escope, va_list args)</td></tr>
<tr class="memdesc:a41d418a82bfc4e80f7ad5ae73d5a4bd9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error handler.  <a href="#a41d418a82bfc4e80f7ad5ae73d5a4bd9">More...</a><br/></td></tr>
<tr class="separator:a41d418a82bfc4e80f7ad5ae73d5a4bd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a15c0cb536f8c7c01692ccea07908944a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a">em_queue_create</a> (const char *name, <a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a> type, <a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a> prio, <a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> group)</td></tr>
<tr class="memdesc:a15c0cb536f8c7c01692ccea07908944a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new queue with a dynamic queue id.  <a href="#a15c0cb536f8c7c01692ccea07908944a">More...</a><br/></td></tr>
<tr class="separator:a15c0cb536f8c7c01692ccea07908944a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52052c19a6707a90fcb4bbc0e1b14742"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a52052c19a6707a90fcb4bbc0e1b14742">em_queue_create_static</a> (const char *name, <a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a> type, <a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a> prio, <a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> group, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:a52052c19a6707a90fcb4bbc0e1b14742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new queue with a static queue id.  <a href="#a52052c19a6707a90fcb4bbc0e1b14742">More...</a><br/></td></tr>
<tr class="separator:a52052c19a6707a90fcb4bbc0e1b14742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a28907b18b348cbb153431c35af5752"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752">em_queue_delete</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:a2a28907b18b348cbb153431c35af5752"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete a queue.  <a href="#a2a28907b18b348cbb153431c35af5752">More...</a><br/></td></tr>
<tr class="separator:a2a28907b18b348cbb153431c35af5752"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adcbab74b22ffcb629bdf797704ac2706"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706">em_queue_enable</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:adcbab74b22ffcb629bdf797704ac2706"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable event scheduling for the queue.  <a href="#adcbab74b22ffcb629bdf797704ac2706">More...</a><br/></td></tr>
<tr class="separator:adcbab74b22ffcb629bdf797704ac2706"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45770f25aedc6e5d0382da90edf3a19f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a45770f25aedc6e5d0382da90edf3a19f">em_queue_enable_all</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:a45770f25aedc6e5d0382da90edf3a19f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enable event scheduling for all the EO's queues.  <a href="#a45770f25aedc6e5d0382da90edf3a19f">More...</a><br/></td></tr>
<tr class="separator:a45770f25aedc6e5d0382da90edf3a19f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acdce4fad7d09036e325ad53fa1204961"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#acdce4fad7d09036e325ad53fa1204961">em_queue_disable</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:acdce4fad7d09036e325ad53fa1204961"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable scheduling for the queue.  <a href="#acdce4fad7d09036e325ad53fa1204961">More...</a><br/></td></tr>
<tr class="separator:acdce4fad7d09036e325ad53fa1204961"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d5f1685b7155e443d70a59eeb507aad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a7d5f1685b7155e443d70a59eeb507aad">em_queue_disable_all</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:a7d5f1685b7155e443d70a59eeb507aad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Disable scheduling for all the EO's queues.  <a href="#a7d5f1685b7155e443d70a59eeb507aad">More...</a><br/></td></tr>
<tr class="separator:a7d5f1685b7155e443d70a59eeb507aad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83e001b62c2a87bf862fbf695c5e84fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a83e001b62c2a87bf862fbf695c5e84fa">em_queue_set_context</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, const void *context)</td></tr>
<tr class="memdesc:a83e001b62c2a87bf862fbf695c5e84fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set queue specific (application) context.  <a href="#a83e001b62c2a87bf862fbf695c5e84fa">More...</a><br/></td></tr>
<tr class="separator:a83e001b62c2a87bf862fbf695c5e84fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a65850427f68c8c73e09fbf325190c31c"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a65850427f68c8c73e09fbf325190c31c">em_queue_get_context</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:a65850427f68c8c73e09fbf325190c31c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get queue specific (application) context.  <a href="#a65850427f68c8c73e09fbf325190c31c">More...</a><br/></td></tr>
<tr class="separator:a65850427f68c8c73e09fbf325190c31c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a973db0375534e9a4a16a7c9a305573bf"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a973db0375534e9a4a16a7c9a305573bf">em_queue_get_name</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, char *name, size_t maxlen)</td></tr>
<tr class="memdesc:a973db0375534e9a4a16a7c9a305573bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get queue name.  <a href="#a973db0375534e9a4a16a7c9a305573bf">More...</a><br/></td></tr>
<tr class="separator:a973db0375534e9a4a16a7c9a305573bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a05a93ba11dee6ee28519897d5523831e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a05a93ba11dee6ee28519897d5523831e">em_queue_get_priority</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:a05a93ba11dee6ee28519897d5523831e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get queue priority.  <a href="#a05a93ba11dee6ee28519897d5523831e">More...</a><br/></td></tr>
<tr class="separator:a05a93ba11dee6ee28519897d5523831e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab125a473b889ca79b3d0fab51d27f7b9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ab125a473b889ca79b3d0fab51d27f7b9">em_queue_get_type</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:ab125a473b889ca79b3d0fab51d27f7b9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get queue type (scheduling mode).  <a href="#ab125a473b889ca79b3d0fab51d27f7b9">More...</a><br/></td></tr>
<tr class="separator:ab125a473b889ca79b3d0fab51d27f7b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acab36f3033ecd8d67e56433605eb4648"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#acab36f3033ecd8d67e56433605eb4648">em_queue_get_group</a> (<a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:acab36f3033ecd8d67e56433605eb4648"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get queue's queue group.  <a href="#acab36f3033ecd8d67e56433605eb4648">More...</a><br/></td></tr>
<tr class="separator:acab36f3033ecd8d67e56433605eb4648"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbdbc7cadcd97ceae5682710965e16fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd">em_queue_group_create</a> (const char *name, const <a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *mask, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:adbdbc7cadcd97ceae5682710965e16fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new queue group to control queue to core mapping.  <a href="#adbdbc7cadcd97ceae5682710965e16fd">More...</a><br/></td></tr>
<tr class="separator:adbdbc7cadcd97ceae5682710965e16fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa4449ab79c23f34a10a0b48563209bf7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#aa4449ab79c23f34a10a0b48563209bf7">em_queue_group_delete</a> (<a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> group, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:aa4449ab79c23f34a10a0b48563209bf7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete the queue group.  <a href="#aa4449ab79c23f34a10a0b48563209bf7">More...</a><br/></td></tr>
<tr class="separator:aa4449ab79c23f34a10a0b48563209bf7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0492f11dfb4c5d2f8bb5d6ed12cf2552"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552">em_queue_group_modify</a> (<a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> group, const <a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *new_mask, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:a0492f11dfb4c5d2f8bb5d6ed12cf2552"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modify core mask of an existing queue group.  <a href="#a0492f11dfb4c5d2f8bb5d6ed12cf2552">More...</a><br/></td></tr>
<tr class="separator:a0492f11dfb4c5d2f8bb5d6ed12cf2552"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17b2712720cfb7a5875ad21deb39b565"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a17b2712720cfb7a5875ad21deb39b565">em_queue_group_find</a> (const char *name)</td></tr>
<tr class="memdesc:a17b2712720cfb7a5875ad21deb39b565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds queue group by name.  <a href="#a17b2712720cfb7a5875ad21deb39b565">More...</a><br/></td></tr>
<tr class="separator:a17b2712720cfb7a5875ad21deb39b565"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6aa01616d680139b3fe321a3c4dacc1d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a6aa01616d680139b3fe321a3c4dacc1d">em_queue_group_mask</a> (<a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> group, <a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *mask)</td></tr>
<tr class="memdesc:a6aa01616d680139b3fe321a3c4dacc1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get current core mask for a queue group.  <a href="#a6aa01616d680139b3fe321a3c4dacc1d">More...</a><br/></td></tr>
<tr class="separator:a6aa01616d680139b3fe321a3c4dacc1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a196c7caa1177575fd424e9a0d2854da6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6">em_eo_create</a> (const char *name, <a class="el" href="event__machine_8h.html#ac6c4b00c8090f4ef144d8b83c0474dbf">em_start_func_t</a> start, <a class="el" href="event__machine_8h.html#a77d089f1612b0322a4afea9251019576">em_start_local_func_t</a> local_start, <a class="el" href="event__machine_8h.html#a0057112dd786c5f667bf42a424679c89">em_stop_func_t</a> stop, <a class="el" href="event__machine_8h.html#ad402338b2b52bff31bd84ba7b4e1434c">em_stop_local_func_t</a> local_stop, <a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f">em_receive_func_t</a> receive, const void *eo_ctx)</td></tr>
<tr class="memdesc:a196c7caa1177575fd424e9a0d2854da6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create Execution Object (EO).  <a href="#a196c7caa1177575fd424e9a0d2854da6">More...</a><br/></td></tr>
<tr class="separator:a196c7caa1177575fd424e9a0d2854da6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae769b19e613b24487beb943cfb926977"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ae769b19e613b24487beb943cfb926977">em_eo_delete</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:ae769b19e613b24487beb943cfb926977"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete Execution Object (EO).  <a href="#ae769b19e613b24487beb943cfb926977">More...</a><br/></td></tr>
<tr class="separator:ae769b19e613b24487beb943cfb926977"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4fbadae4cc0158b24fdcdb6cf5e04fe"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ae4fbadae4cc0158b24fdcdb6cf5e04fe">em_eo_get_name</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, char *name, size_t maxlen)</td></tr>
<tr class="memdesc:ae4fbadae4cc0158b24fdcdb6cf5e04fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name given to the EO when it was created.  <a href="#ae4fbadae4cc0158b24fdcdb6cf5e04fe">More...</a><br/></td></tr>
<tr class="separator:ae4fbadae4cc0158b24fdcdb6cf5e04fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a681c9d79f7ca5c0590030f74357472c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a681c9d79f7ca5c0590030f74357472c0">em_eo_add_queue</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:a681c9d79f7ca5c0590030f74357472c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a queue to an EO.  <a href="#a681c9d79f7ca5c0590030f74357472c0">More...</a><br/></td></tr>
<tr class="separator:a681c9d79f7ca5c0590030f74357472c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c47c33e158c209480d485a1b8d4e72f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a6c47c33e158c209480d485a1b8d4e72f">em_eo_remove_queue</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:a6c47c33e158c209480d485a1b8d4e72f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes a queue from an EO.  <a href="#a6c47c33e158c209480d485a1b8d4e72f">More...</a><br/></td></tr>
<tr class="separator:a6c47c33e158c209480d485a1b8d4e72f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1020917f6061bf56da36773946eece72"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a1020917f6061bf56da36773946eece72">em_eo_register_error_handler</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9">em_error_handler_t</a> handler)</td></tr>
<tr class="memdesc:a1020917f6061bf56da36773946eece72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register EO specific error handler.  <a href="#a1020917f6061bf56da36773946eece72">More...</a><br/></td></tr>
<tr class="separator:a1020917f6061bf56da36773946eece72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4e1fcce506b682f44f808b2c027311f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ac4e1fcce506b682f44f808b2c027311f">em_eo_unregister_error_handler</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td></tr>
<tr class="memdesc:ac4e1fcce506b682f44f808b2c027311f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister EO specific error handler.  <a href="#ac4e1fcce506b682f44f808b2c027311f">More...</a><br/></td></tr>
<tr class="separator:ac4e1fcce506b682f44f808b2c027311f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97445f266a00782bb23fc2c464533d6d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d">em_eo_start</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> *result, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:a97445f266a00782bb23fc2c464533d6d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start Execution Object (EO).  <a href="#a97445f266a00782bb23fc2c464533d6d">More...</a><br/></td></tr>
<tr class="separator:a97445f266a00782bb23fc2c464533d6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae55868eb38108620ed37e22038d0d404"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404">em_eo_stop</a> (<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, int num_notif, const <a class="el" href="structem__notif__t.html">em_notif_t</a> *notif_tbl)</td></tr>
<tr class="memdesc:ae55868eb38108620ed37e22038d0d404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Stop Execution Object (EO).  <a href="#ae55868eb38108620ed37e22038d0d404">More...</a><br/></td></tr>
<tr class="separator:ae55868eb38108620ed37e22038d0d404"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13d21af31382ec2c3d45010645707e9c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a13d21af31382ec2c3d45010645707e9c">em_core_id</a> (void)</td></tr>
<tr class="memdesc:a13d21af31382ec2c3d45010645707e9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Logical core id.  <a href="#a13d21af31382ec2c3d45010645707e9c">More...</a><br/></td></tr>
<tr class="separator:a13d21af31382ec2c3d45010645707e9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84fa6ec801b82a586ff5e31693d3deb8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a84fa6ec801b82a586ff5e31693d3deb8">em_core_count</a> (void)</td></tr>
<tr class="memdesc:a84fa6ec801b82a586ff5e31693d3deb8"><td class="mdescLeft">&#160;</td><td class="mdescRight">The number of cores running within the same EM instance (sharing the EM state).  <a href="#a84fa6ec801b82a586ff5e31693d3deb8">More...</a><br/></td></tr>
<tr class="separator:a84fa6ec801b82a586ff5e31693d3deb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22fcb41f303628eebe4f0b45b6c64ab0"><td class="memItemLeft" align="right" valign="top">em_event_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a22fcb41f303628eebe4f0b45b6c64ab0">em_alloc</a> (size_t size, <a class="el" href="event__machine__types_8h.html#a2f5b3fb43add8103da34b52cc1d0f2cc">em_event_type_t</a> type, <a class="el" href="event__machine__types_8h.html#aded70bd6da9a02c082e82e56742a319e">em_pool_id_t</a> pool_id)</td></tr>
<tr class="memdesc:a22fcb41f303628eebe4f0b45b6c64ab0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate an event.  <a href="#a22fcb41f303628eebe4f0b45b6c64ab0">More...</a><br/></td></tr>
<tr class="separator:a22fcb41f303628eebe4f0b45b6c64ab0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4f97ba217518d967f8078c56023c4d4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ad4f97ba217518d967f8078c56023c4d4">em_free</a> (em_event_t event)</td></tr>
<tr class="memdesc:ad4f97ba217518d967f8078c56023c4d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free an event.  <a href="#ad4f97ba217518d967f8078c56023c4d4">More...</a><br/></td></tr>
<tr class="separator:ad4f97ba217518d967f8078c56023c4d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aca4584a01b71429dfbb045342454b464"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#aca4584a01b71429dfbb045342454b464">em_send</a> (em_event_t event, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue)</td></tr>
<tr class="memdesc:aca4584a01b71429dfbb045342454b464"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send an event to a queue.  <a href="#aca4584a01b71429dfbb045342454b464">More...</a><br/></td></tr>
<tr class="separator:aca4584a01b71429dfbb045342454b464"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af80e7173968f134ff3a9df6509c17009"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#af80e7173968f134ff3a9df6509c17009">em_atomic_processing_end</a> (void)</td></tr>
<tr class="memdesc:af80e7173968f134ff3a9df6509c17009"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release atomic processing context.  <a href="#af80e7173968f134ff3a9df6509c17009">More...</a><br/></td></tr>
<tr class="separator:af80e7173968f134ff3a9df6509c17009"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7332965c5deaa69411136e8d36089c6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#af7332965c5deaa69411136e8d36089c6">em_register_error_handler</a> (<a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9">em_error_handler_t</a> handler)</td></tr>
<tr class="memdesc:af7332965c5deaa69411136e8d36089c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Register the global error handler.  <a href="#af7332965c5deaa69411136e8d36089c6">More...</a><br/></td></tr>
<tr class="separator:af7332965c5deaa69411136e8d36089c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b469100e5f60670a742d944a6f530b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#ab6b469100e5f60670a742d944a6f530b">em_unregister_error_handler</a> (void)</td></tr>
<tr class="memdesc:ab6b469100e5f60670a742d944a6f530b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unregister the global error handler.  <a href="#ab6b469100e5f60670a742d944a6f530b">More...</a><br/></td></tr>
<tr class="separator:ab6b469100e5f60670a742d944a6f530b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d45cd3fa718f99bce956904b5e081de"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="event__machine_8h.html#a1d45cd3fa718f99bce956904b5e081de">em_error</a> (<a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> error, <a class="el" href="event__machine__types_8h.html#a5b0a5fb6ffe7f0fdb90caa388070dff3">em_escope_t</a> escope,...)</td></tr>
<tr class="memdesc:a1d45cd3fa718f99bce956904b5e081de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Report an error.  <a href="#a1d45cd3fa718f99bce956904b5e081de">More...</a><br/></td></tr>
<tr class="separator:a1d45cd3fa718f99bce956904b5e081de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Event Machine API v1.0. </p>

<p>Definition in file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a07c497e9f8ae9053547af50c62cce153"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EM_API_VERSION_MAJOR&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Major API version number. </p>
<p>Step if not backwards compatible </p>

<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00043">43</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a22170090d4e6faac09b474d39e6f07b1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define EM_API_VERSION_MINOR&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Minor API version number. </p>
<p>Updates and additions </p>

<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00044">44</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a class="anchor" id="af132a04504b399fd5f59521f4f16306f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef void(* em_receive_func_t)(void *eo_ctx, em_event_t event, <a class="el" href="event__machine__types_8h.html#a2f5b3fb43add8103da34b52cc1d0f2cc">em_event_type_t</a> type, <a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> queue, void *q_ctx)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Receive event. </p>
<p>Application receives events through the EO receive function. It implements main part of the application logic. EM calls the receive function when it has dequeued an event from one of the EO's queues. Application processes the event and returns immediately (in run-to-completion fashion).</p>
<p>On multicore systems several events (from the same or different queues) may be dequeued in parallel and thus same receive function may be executed concurrently on several cores. Parallel execution may be limited by queue group setup or using queues with atomic scheduling mode.</p>
<p>EO and queue context pointers are user defined (in EO and queue creation time) and may be used any way needed. For example, EO context may be used to store global EO state information, which is common to all queues and events. In addition, queue context may be used to store queue (or user data flow) specific state data. EM never touches the data, just passes the pointers.</p>
<p>Event (handle) must be converted to an event structure pointer with em_event_pointer(). Event type specifies the event structure, which is implementation or application specific. Queue id specifies the queue which the event was dequeued from.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo_ctx</td><td>EO context data. The pointer is passed in <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a>, EM does not touch the data. </td></tr>
    <tr><td class="paramname">event</td><td>Event handle </td></tr>
    <tr><td class="paramname">type</td><td>Event type </td></tr>
    <tr><td class="paramname">queue</td><td>Queue from which this event came from </td></tr>
    <tr><td class="paramname">q_ctx</td><td>Queue context data. The pointer is passed in <a class="el" href="event__machine_8h.html#a83e001b62c2a87bf862fbf695c5e84fa" title="Set queue specific (application) context.">em_queue_set_context()</a>, EM does not touch the data.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd>em_event_pointer(), <a class="el" href="event__machine_8h.html#ad4f97ba217518d967f8078c56023c4d4" title="Free an event.">em_free()</a>, <a class="el" href="event__machine_8h.html#a22fcb41f303628eebe4f0b45b6c64ab0" title="Allocate an event.">em_alloc()</a>, <a class="el" href="event__machine_8h.html#aca4584a01b71429dfbb045342454b464" title="Send an event to a queue.">em_send()</a>, <a class="el" href="event__machine_8h.html#a83e001b62c2a87bf862fbf695c5e84fa" title="Set queue specific (application) context.">em_queue_set_context()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_hello_8c-example.html#a6">test_appl_hello.c</a>.</dd>
</dl>
<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00211">211</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="ac6c4b00c8090f4ef144d8b83c0474dbf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(* em_start_func_t)(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execution object start, global. </p>
<p>If load balancing/several cores share the EO, this function is called once on one core only (any). Purpose of this global start is to provide a placeholder for first level initialization, like allocating memory and initializing shared data. After this global start returns, the core local version (if defined), is called (see em_start_local_func_t below). If there is no core local start, then event dispatching is immediately enabled.</p>
<p>If Execution object does not return EM_OK, the system will not call the core local init and will not enable event dispatching.</p>
<p>This function should never be called directly from the application, but using the <a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a> instead, which maintains state information!</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo_ctx</td><td>Execution object internal state/instance data </td></tr>
    <tr><td class="paramname">eo</td><td>Execution object id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_hello_8c-example.html#a4">test_appl_hello.c</a>.</dd>
</dl>
<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00237">237</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a77d089f1612b0322a4afea9251019576"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(* em_start_local_func_t)(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execution object start, core local. </p>
<p>This is similar to the global start above, but this one is called after the global start has completed and is called on all cores.</p>
<p>Purpose of this optional local start is to work as a placeholder for core local initialization, e.g. allocating core local memory for example. The global start is only called on one core. The use of local start is optional. Note, that application should never directly call this function, this will be called via <a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a>.</p>
<p>If this does not return EM_OK on all involved cores, the event dispatching is not enabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo_ctx</td><td>Execution object internal state/instance data </td></tr>
    <tr><td class="paramname">eo</td><td>Execution object id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>

<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00262">262</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="ad402338b2b52bff31bd84ba7b4e1434c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(* em_stop_local_func_t)(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execution object stop, core local. </p>
<p>If load balancing/several cores share the EO, this function is called once on each core before the global stop (reverse order of start). System disables event dispatching before calling this and also makes sure this does not get called before the core has been notified the stop condition for this EO (won't dispatch new events) Return value is only for logging purposes, EM does not use it currently.</p>
<p>Note, that application should never directly call this stop function, <a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a> will trigger this.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo_ctx</td><td>Execution object internal state data </td></tr>
    <tr><td class="paramname">eo</td><td>Execution object id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>

<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00284">284</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a0057112dd786c5f667bf42a424679c89"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(* em_stop_func_t)(void *eo_ctx, <a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Execution object stop, global. </p>
<p>If load balancing/several cores share the EO, this function is called once on one core (any) after the (optional) core local stop return on all cores. System disables event dispatching before calling this and also makes sure this does not get called before all cores have been notified the stop condition for this EO (can't dispatch new events) event if there is no core local stop defined. Return value is only for logging purposes, EM does not use it currently.</p>
<p>Note, that application should never directly call this stop function, but use the <a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a> instead, which maintains state information and guarantees synchronized operation.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo_ctx</td><td>Execution object internal state data </td></tr>
    <tr><td class="paramname">eo</td><td>Execution object id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_hello_8c-example.html#a5">test_appl_hello.c</a>.</dd>
</dl>
<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00309">309</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<a class="anchor" id="a41d418a82bfc4e80f7ad5ae73d5a4bd9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>(* em_error_handler_t)(<a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> eo, <a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> error, <a class="el" href="event__machine__types_8h.html#a5b0a5fb6ffe7f0fdb90caa388070dff3">em_escope_t</a> escope, va_list args)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Error handler. </p>
<p>Error handler maybe called after EM notices an error or user have called <a class="el" href="event__machine_8h.html#a1d45cd3fa718f99bce956904b5e081de" title="Report an error.">em_error()</a>.</p>
<p>User can register EO specific and/or EM global error handlers. When an error is noticed, EM calls EO specific error handler, if registered. If there's no EO specific handler registered (for the EO) or the error is noticed outside of an EO context, EM calls the global error handler (if registered). If no error handlers are found, EM just returns an error code depending on the API function.</p>
<p>Error handler is called with the original error code from the API call or <a class="el" href="event__machine_8h.html#a1d45cd3fa718f99bce956904b5e081de" title="Report an error.">em_error()</a>. Error scope identifies the source of the error and how the error code and variable arguments should be interpreted (number of arguments and types).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>Execution object id </td></tr>
    <tr><td class="paramname">error</td><td>The error code </td></tr>
    <tr><td class="paramname">escope</td><td>Error scope. Identifies the scope for interpreting the error code and variable arguments. </td></tr>
    <tr><td class="paramname">args</td><td>Variable number and type of arguments</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The function may not return depending on implementation/error code/error scope. If it returns, it can return the original or modified error code or even EM_OK, if it could fix the problem.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af7332965c5deaa69411136e8d36089c6" title="Register the global error handler.">em_register_error_handler()</a>, <a class="el" href="event__machine_8h.html#a1020917f6061bf56da36773946eece72" title="Register EO specific error handler.">em_eo_register_error_handler()</a> </dd></dl>

<p>Definition at line <a class="el" href="event__machine_8h_source.html#l00336">336</a> of file <a class="el" href="event__machine_8h_source.html">event_machine.h</a>.</p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a15c0cb536f8c7c01692ccea07908944a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a> em_queue_create </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a>&#160;</td>
          <td class="paramname"><em>prio</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td>
          <td class="paramname"><em>group</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new queue with a dynamic queue id. </p>
<p>The given name string is copied to EM internal data structure. The maximum string length is EM_QUEUE_NAME_LEN.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>Queue name for debugging purposes (optional, NULL ok) </td></tr>
    <tr><td class="paramname">type</td><td>Queue scheduling type </td></tr>
    <tr><td class="paramname">prio</td><td>Queue priority </td></tr>
    <tr><td class="paramname">group</td><td>Queue group for this queue</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>New queue id or EM_QUEUE_UNDEF on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752" title="Delete a queue.">em_queue_delete()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a5">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a4">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a10">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a4">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a52052c19a6707a90fcb4bbc0e1b14742"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_create_static </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a>&#160;</td>
          <td class="paramname"><em>prio</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td>
          <td class="paramname"><em>group</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new queue with a static queue id. </p>
<p>Note, that system may have limited amount of static identifiers, so unless really needed use dynamic queues instead. The range of static identifiers is system dependent, but macros EM_QUEUE_STATIC_MIN and EM_QUEUE_STATIC_MAX can be used to abstract, i.e. use EM_QUEUE_STATIC_MIN+x for the application.</p>
<p>The given name string is copied to EM internal data structure. The maximum string length is EM_QUEUE_NAME_LEN.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>Queue name for debugging purposes (optional, NULL ok) </td></tr>
    <tr><td class="paramname">type</td><td>Queue scheduling type </td></tr>
    <tr><td class="paramname">prio</td><td>Queue priority </td></tr>
    <tr><td class="paramname">group</td><td>Queue group for this queue </td></tr>
    <tr><td class="paramname">queue</td><td>Requested queue id from the static range</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752" title="Delete a queue.">em_queue_delete()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a2a28907b18b348cbb153431c35af5752"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_delete </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete a queue. </p>
<p>Unallocates the queue id. NOTE: this is an immediate deletion and can <em>only</em> be done after the queue has been removed from scheduling using <a class="el" href="event__machine_8h.html#a6c47c33e158c209480d485a1b8d4e72f" title="Removes a queue from an EO.">em_eo_remove_queue()</a> !</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue id to delete</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a6c47c33e158c209480d485a1b8d4e72f" title="Removes a queue from an EO.">em_eo_remove_queue()</a>, <a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a>, <a class="el" href="event__machine_8h.html#a52052c19a6707a90fcb4bbc0e1b14742" title="Create a new queue with a static queue id.">em_queue_create_static()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adcbab74b22ffcb629bdf797704ac2706"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_enable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enable event scheduling for the queue. </p>
<p>All events sent to a non-enabled queue may get discarded or held depending on the system. Queue enable/disable is not meant to be used for additional scheduling nor used frequently. Main purpose is to synchronize startup or recovery actions.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue to enable</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a>, <a class="el" href="event__machine_8h.html#a45770f25aedc6e5d0382da90edf3a19f" title="Enable event scheduling for all the EO&#39;s queues.">em_queue_enable_all()</a>, <a class="el" href="event__machine_8h.html#acdce4fad7d09036e325ad53fa1204961" title="Disable scheduling for the queue.">em_queue_disable()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a10">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a9">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a18">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a10">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a45770f25aedc6e5d0382da90edf3a19f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_enable_all </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Enable event scheduling for all the EO's queues. </p>
<p>Otherwise identical to <a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706" title="Enable event scheduling for the queue.">em_queue_enable()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706" title="Enable event scheduling for the queue.">em_queue_enable()</a>, <a class="el" href="event__machine_8h.html#a7d5f1685b7155e443d70a59eeb507aad" title="Disable scheduling for all the EO&#39;s queues.">em_queue_disable_all()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="acdce4fad7d09036e325ad53fa1204961"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_disable </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Disable scheduling for the queue. </p>
<p>Note, that this might be an asynchronous operation and actually complete later as other cores may still be handling existing events. If application needs to know exactly when all processing is completed, it can use the notification arguments - the given notification(s) are sent after all cores have completed.</p>
<p>Implicit disable is done for all queues, that are mapped to an EO when it's stop-function is called (via <a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>).</p>
<p>All events sent to a non-enabled queue may get discarded or held depending on the system. Queue enable/disable is not meant to be used for additional scheduling nor used frequently. Main purpose is to synchronize startup or recovery actions.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue to disable </td></tr>
    <tr><td class="paramname">num_notif</td><td>Number of entries in notif_tbl, use 0 for no notification </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Notification events to send</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, <a class="el" href="event__machine_8h.html#a7d5f1685b7155e443d70a59eeb507aad" title="Disable scheduling for all the EO&#39;s queues.">em_queue_disable_all()</a>, <a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706" title="Enable event scheduling for the queue.">em_queue_enable()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a7d5f1685b7155e443d70a59eeb507aad"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_disable_all </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Disable scheduling for all the EO's queues. </p>
<p>Otherwise identical to <a class="el" href="event__machine_8h.html#acdce4fad7d09036e325ad53fa1204961" title="Disable scheduling for the queue.">em_queue_disable()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">num_notif</td><td>Number of entries in notif_tbl, use 0 for no notification </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Notification events to send</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, <a class="el" href="event__machine_8h.html#acdce4fad7d09036e325ad53fa1204961" title="Disable scheduling for the queue.">em_queue_disable()</a>, <a class="el" href="event__machine_8h.html#a45770f25aedc6e5d0382da90edf3a19f" title="Enable event scheduling for all the EO&#39;s queues.">em_queue_enable_all()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a83e001b62c2a87bf862fbf695c5e84fa"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_set_context </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>context</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set queue specific (application) context. </p>
<p>This is just a single pointer associated with a queue. Application can use it to access some context data quickly (without a lookup). The context is given as argument for the receive function. EM does not use the value, it just passes it.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue to which associate the context </td></tr>
    <tr><td class="paramname">context</td><td>Context pointer</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f" title="Receive event.">em_receive_func_t()</a>, <a class="el" href="event__machine_8h.html#a65850427f68c8c73e09fbf325190c31c" title="Get queue specific (application) context.">em_queue_get_context()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_hello_8c-example.html#a13">test_appl_hello.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a65850427f68c8c73e09fbf325190c31c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void* em_queue_get_context </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get queue specific (application) context. </p>
<p>Returns the value application has earlier set with <a class="el" href="event__machine_8h.html#a83e001b62c2a87bf862fbf695c5e84fa" title="Set queue specific (application) context.">em_queue_set_context()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue which context is requested</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Queue specific context pointer or NULL on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a83e001b62c2a87bf862fbf695c5e84fa" title="Set queue specific (application) context.">em_queue_set_context()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a973db0375534e9a4a16a7c9a305573bf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t em_queue_get_name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>maxlen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get queue name. </p>
<p>Returns the name given to a queue when it was created. A copy of the queue name string (up to 'maxlen' characters) is written to the user given buffer. String is always null terminated even if the given buffer length is less than the name length.</p>
<p>If the queue has no name, function returns 0 and writes empty string.</p>
<p>This is only for debugging purposes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue id </td></tr>
    <tr><td class="paramname">name</td><td>Destination buffer </td></tr>
    <tr><td class="paramname">maxlen</td><td>Maximum length (including the terminating '0')</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of characters written (excludes the terminating '0').</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a05a93ba11dee6ee28519897d5523831e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a1d3594d8e5e36f7b84796a99d7feee9a">em_queue_prio_t</a> em_queue_get_priority </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get queue priority. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue identifier</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Priority class or EM_QUEUE_PRIO_UNDEF on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ab125a473b889ca79b3d0fab51d27f7b9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a093428598166c7c5d40351bc60809894">em_queue_type_t</a> em_queue_get_type </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get queue type (scheduling mode). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue identifier</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Queue type or EM_QUEUE_TYPE_UNDEF on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="acab36f3033ecd8d67e56433605eb4648"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> em_queue_get_group </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get queue's queue group. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">queue</td><td>Queue identifier</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Queue group or EM_QUEUE_GROUP_UNDEF on error.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a>, <a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="adbdbc7cadcd97ceae5682710965e16fd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> em_queue_group_create </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *&#160;</td>
          <td class="paramname"><em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new queue group to control queue to core mapping. </p>
<p>Allocates a new queue group identifier with a given core mask. The group name can have max EM_QUEUE_GROUP_NAME_LEN characters and must be unique since it's used to identify the group. Cores added to the queue group can be changed later with <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a>.</p>
<p>This operation may be asynchronous, i.e. the creation may complete well after this function has returned. Provide notification events, if application cares about the actual completion time. EM will send notifications when the operation has completed.</p>
<p>The core mask is visible through <a class="el" href="event__machine_8h.html#a6aa01616d680139b3fe321a3c4dacc1d" title="Get current core mask for a queue group.">em_queue_group_mask()</a> only after the create operation is complete.</p>
<p>Note, that depending on the system, the operation can also happen one core at a time, so an intermediate mask may be active momentarily.</p>
<p>Only manipulate the core mask with the access macros defined in <a class="el" href="event__machine__core__mask_8h.html" title="Event Machine core mask functions.">event_machine_core_mask.h</a> as the implementation underneath may change.</p>
<p>EM has a default group (EM_QUEUE_GROUP_DEFAULT) containing all cores. It's named "default", otherwise naming scheme is system specific.</p>
<p>Note, some systems may have a low number of queue groups available.</p>
<dl class="section attention"><dt>Attention</dt><dd>Only call <a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706" title="Enable event scheduling for the queue.">em_queue_enable()</a> after <a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a> has completed - use notifications to synchronize.</dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>Queue group name. Unique name for identifying the group. </td></tr>
    <tr><td class="paramname">mask</td><td>Core mask for the queue group </td></tr>
    <tr><td class="paramname">num_notif</td><td>Number of entries in notif_tbl (use 0 for no notification) </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of notifications to send to signal completion of operation</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Queue group or EM_QUEUE_GROUP_UNDEF on error.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a17b2712720cfb7a5875ad21deb39b565" title="Finds queue group by name.">em_queue_group_find()</a>, <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a>, <a class="el" href="event__machine_8h.html#aa4449ab79c23f34a10a0b48563209bf7" title="Delete the queue group.">em_queue_group_delete()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="aa4449ab79c23f34a10a0b48563209bf7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_group_delete </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td>
          <td class="paramname"><em>group</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete the queue group. </p>
<p>Removes all cores from the queue group and free's the identifier for re-use. All queues in the group must be deleted with <a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752" title="Delete a queue.">em_queue_delete()</a> before deleting the group.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">group</td><td>Queue group to delete </td></tr>
    <tr><td class="paramname">num_notif</td><td>Number of entries in notif_tbl (use 0 for no notification) </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of notifications to send to signal completion of operation</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a>, <a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752" title="Delete a queue.">em_queue_delete()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a0492f11dfb4c5d2f8bb5d6ed12cf2552"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_group_modify </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td>
          <td class="paramname"><em>group</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *&#160;</td>
          <td class="paramname"><em>new_mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Modify core mask of an existing queue group. </p>
<p>The function compares the new core mask to the current mask and changes the queue group to core mapping accordingly.</p>
<p>This operation may be asynchronous, i.e. the change may complete well after this function has returned. Provide notification events, if application cares about the actual completion time. EM will send notifications when the operation has completed.</p>
<p>The new core mask is visible through <a class="el" href="event__machine_8h.html#a6aa01616d680139b3fe321a3c4dacc1d" title="Get current core mask for a queue group.">em_queue_group_mask()</a> only after the modify operation is complete.</p>
<p>Note, that depending on the system, the change can also happen one core at a time, so an intermediate mask may be active momentarily.</p>
<p>Only manipulate core mask with the access macros defined in <a class="el" href="event__machine__core__mask_8h.html" title="Event Machine core mask functions.">event_machine_core_mask.h</a> as the implementation underneath may change.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">group</td><td>Queue group to modify </td></tr>
    <tr><td class="paramname">new_mask</td><td>New core mask </td></tr>
    <tr><td class="paramname">num_notif</td><td>Number of entries in notif_tbl (use 0 for no notification) </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of notifications to send</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a17b2712720cfb7a5875ad21deb39b565" title="Finds queue group by name.">em_queue_group_find()</a>, <a class="el" href="event__machine_8h.html#aa4449ab79c23f34a10a0b48563209bf7" title="Delete the queue group.">em_queue_group_delete()</a>, <a class="el" href="event__machine_8h.html#a6aa01616d680139b3fe321a3c4dacc1d" title="Get current core mask for a queue group.">em_queue_group_mask()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a17b2712720cfb7a5875ad21deb39b565"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a> em_queue_group_find </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Finds queue group by name. </p>
<p>This returns the situation at the moment of the inquiry. If another core is modifying the group at the same time the result may not be up-to-date. Application may need to synchronize group modifications.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>Name of the queue qroup to find</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Queue group or EM_QUEUE_GROUP_UNDEF on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a6aa01616d680139b3fe321a3c4dacc1d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_queue_group_mask </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a83c306852adcd934bc159b719fe482e3">em_queue_group_t</a>&#160;</td>
          <td class="paramname"><em>group</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="unionem__core__mask__t.html">em_core_mask_t</a> *&#160;</td>
          <td class="paramname"><em>mask</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get current core mask for a queue group. </p>
<p>This returns the situation at the moment of the inquiry. If another core is modifying the group at the same time the result may not be up-to-date. Application may need to synchronize group modifications.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">group</td><td>Queue group </td></tr>
    <tr><td class="paramname">mask</td><td>Core mask for the queue group</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#adbdbc7cadcd97ceae5682710965e16fd" title="Create a new queue group to control queue to core mapping.">em_queue_group_create()</a>, <a class="el" href="event__machine_8h.html#a0492f11dfb4c5d2f8bb5d6ed12cf2552" title="Modify core mask of an existing queue group.">em_queue_group_modify()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a196c7caa1177575fd424e9a0d2854da6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a> em_eo_create </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#ac6c4b00c8090f4ef144d8b83c0474dbf">em_start_func_t</a>&#160;</td>
          <td class="paramname"><em>start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#a77d089f1612b0322a4afea9251019576">em_start_local_func_t</a>&#160;</td>
          <td class="paramname"><em>local_start</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#a0057112dd786c5f667bf42a424679c89">em_stop_func_t</a>&#160;</td>
          <td class="paramname"><em>stop</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#ad402338b2b52bff31bd84ba7b4e1434c">em_stop_local_func_t</a>&#160;</td>
          <td class="paramname"><em>local_stop</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f">em_receive_func_t</a>&#160;</td>
          <td class="paramname"><em>receive</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>eo_ctx</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create Execution Object (EO). </p>
<p>This will allocate identifier and initialize internal data for a new EO. It is left in a non-active state, i.e. no events are dispatched before <a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a> has called. Start, stop and receive callback function pointers are mandatory parameters.</p>
<p>The name given is copied to EO internal data and can be used e.g. for debugging. The maximum length stored is EM_EO_NAME_LEN.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">name</td><td>Name of the EO (NULL if no name) </td></tr>
    <tr><td class="paramname">start</td><td>Start function </td></tr>
    <tr><td class="paramname">local_start</td><td>Core local start function (NULL if no local start) </td></tr>
    <tr><td class="paramname">stop</td><td>Stop function </td></tr>
    <tr><td class="paramname">local_stop</td><td>Core local stop function (NULL if no local stop) </td></tr>
    <tr><td class="paramname">receive</td><td>Receive function </td></tr>
    <tr><td class="paramname">eo_ctx</td><td>User defined EO context data, EM just passes the pointer (NULL if not context)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>New EO id if successful, otherwise EM_EO_UNDEF</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a>, <a class="el" href="event__machine_8h.html#ae769b19e613b24487beb943cfb926977" title="Delete Execution Object (EO).">em_eo_delete()</a>, <a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a>, <a class="el" href="event__machine_8h.html#a681c9d79f7ca5c0590030f74357472c0" title="Add a queue to an EO.">em_eo_add_queue()</a> </dd>
<dd>
<a class="el" href="event__machine_8h.html#ac6c4b00c8090f4ef144d8b83c0474dbf" title="Execution object start, global.">em_start_func_t()</a>, <a class="el" href="event__machine_8h.html#a0057112dd786c5f667bf42a424679c89" title="Execution object stop, global.">em_stop_func_t()</a>, <a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f" title="Receive event.">em_receive_func_t()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a4">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a3">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a3">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a3">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae769b19e613b24487beb943cfb926977"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_delete </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete Execution Object (EO). </p>
<p>This will immediately delete the given EO and free the identifier.</p>
<p>NOTE, that EO can only be deleted after it has been stopped using <a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, otherwise another core might still access the EO data! Deletion will fail, if the EO is not stopped.</p>
<p>This will delete all possibly remaining queues.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id to delete</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ae4fbadae4cc0158b24fdcdb6cf5e04fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t em_eo_get_name </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>maxlen</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Returns the name given to the EO when it was created. </p>
<p>A copy of the name string (up to 'maxlen' characters) is written to the user buffer 'name'. String is always null terminated even if the given buffer length is less than the name length.</p>
<p>If the EO has no name, function returns 0 and writes empty string.</p>
<p>This is only for debugging purposes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">name</td><td>Destination buffer </td></tr>
    <tr><td class="paramname">maxlen</td><td>Maximum length (including the terminating '0')</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Number of characters written (excludes the terminating '0')</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a18">test_appl_error.c</a>, and <a class="el" href="test_appl_hello_8c-example.html#a9">test_appl_hello.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a681c9d79f7ca5c0590030f74357472c0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_add_queue </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Add a queue to an EO. </p>
<p>Note, that this does not enable the queue. Although queues added in (or before) the start function will be enabled automatically.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">queue</td><td>Queue id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a15c0cb536f8c7c01692ccea07908944a" title="Create a new queue with a dynamic queue id.">em_queue_create()</a>, <a class="el" href="event__machine_8h.html#a196c7caa1177575fd424e9a0d2854da6" title="Create Execution Object (EO).">em_eo_create()</a>, <a class="el" href="event__machine_8h.html#adcbab74b22ffcb629bdf797704ac2706" title="Enable event scheduling for the queue.">em_queue_enable()</a>, <a class="el" href="event__machine_8h.html#a6c47c33e158c209480d485a1b8d4e72f" title="Removes a queue from an EO.">em_eo_remove_queue()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a6">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a5">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a17">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a5">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a6c47c33e158c209480d485a1b8d4e72f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_remove_queue </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Removes a queue from an EO. </p>
<p>Function disables scheduling of the queue and removes the queue from the EO. The operation is asynchronous, to quarantee that all cores have completed processing of events from the queue (i.e. there's no cores in middle of the receive function) before removing it.</p>
<p>If the caller needs to know when the context deletion actually occurred, the num_notif and notif_tbl can be used. The given notification event(s) will be sent to given queue(s), when the removal has completed. If such notification is not needed, use 0 as num_notif.</p>
<p>If the queue to be removed is still enabled, it will first be disabled.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">queue</td><td>Queue id to remove </td></tr>
    <tr><td class="paramname">num_notif</td><td>How many notification events given, 0 for no notification </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of pairs of event and queue identifiers</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a681c9d79f7ca5c0590030f74357472c0" title="Add a queue to an EO.">em_eo_add_queue()</a>, <a class="el" href="event__machine_8h.html#acdce4fad7d09036e325ad53fa1204961" title="Disable scheduling for the queue.">em_queue_disable()</a>, <a class="el" href="event__machine_8h.html#a2a28907b18b348cbb153431c35af5752" title="Delete a queue.">em_queue_delete()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a1020917f6061bf56da36773946eece72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_register_error_handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9">em_error_handler_t</a>&#160;</td>
          <td class="paramname"><em>handler</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Register EO specific error handler. </p>
<p>The EO specific error handler is called if error is noticed or <a class="el" href="event__machine_8h.html#a1d45cd3fa718f99bce956904b5e081de" title="Report an error.">em_error()</a> is called in the context of the EO. Note, the function will override any previously registered error hanler.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">handler</td><td>New error handler.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af7332965c5deaa69411136e8d36089c6" title="Register the global error handler.">em_register_error_handler()</a>, <a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9" title="Error handler.">em_error_handler_t()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a11">test_appl_error.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ac4e1fcce506b682f44f808b2c027311f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_unregister_error_handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregister EO specific error handler. </p>
<p>Removes previously registered EO specific error handler.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful. </dd></dl>

</div>
</div>
<a class="anchor" id="a97445f266a00782bb23fc2c464533d6d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_start </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> *&#160;</td>
          <td class="paramname"><em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Start Execution Object (EO). </p>
<p>Calls global EO start function. If that returns EM_OK, an internal event to trigger local start is sent to all cores belonging to the queue group of this EO. If the global start function does not return EM_OK the local start is not called and event dispatching is not enabled for this EO.</p>
<p>If the caller needs to know when the EO start was actually completed on all cores, the num_notif and notif_tbl can be used. The given notification event(s) will be sent to given queue(s), when the start is completed on all cores. If local start does not exist the notification(s) are sent as the global start returns. If such notification is not needed, use 0 as num_notif.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">result</td><td>Optional pointer to em_status_t, which gets updated to the return value of the actual EO global start function</td></tr>
    <tr><td class="paramname">num_notif</td><td>If not 0, defines the number of events to send as all cores have returned from the start function (in notif_tbl).</td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of <a class="el" href="structem__notif__t.html" title="Event.">em_notif_t</a>, the optional notification events (data copied)</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ac6c4b00c8090f4ef144d8b83c0474dbf" title="Execution object start, global.">em_start_func_t()</a>, <a class="el" href="event__machine_8h.html#a77d089f1612b0322a4afea9251019576" title="Execution object start, core local.">em_start_local_func_t()</a>, <a class="el" href="event__machine_8h.html#ae55868eb38108620ed37e22038d0d404" title="Stop Execution Object (EO).">em_eo_stop()</a></dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>Way to read core local start value or status? </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a12">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a10">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a8">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a9">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ae55868eb38108620ed37e22038d0d404"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_eo_stop </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a1d373bd8469414626259c3ea14b5ee2a">em_eo_t</a>&#160;</td>
          <td class="paramname"><em>eo</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>num_notif</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="structem__notif__t.html">em_notif_t</a> *&#160;</td>
          <td class="paramname"><em>notif_tbl</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Stop Execution Object (EO). </p>
<p>Disables event dispatch from all related queues, calls core local stop on all cores and finally calls the global stop function of the EO, when all cores have returned from the (optional) core local stop. Call to the global EO stop is asynchronous and only done, when all cores have completed processing of the receive function and/or core local stop. This guarantees no core is accessing EO data during EO global stop function.</p>
<p>This function returns immediately.</p>
<p>If the caller needs to know when the EO stop was actually completed, the num_notif and notif_tbl can be used. The given notification event(s) will be sent to given queue(s), when the stop actually completes. If such notification is not needed, use 0 as num_notif.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">eo</td><td>EO id </td></tr>
    <tr><td class="paramname">num_notif</td><td>How many notification events given, 0 for no notification </td></tr>
    <tr><td class="paramname">notif_tbl</td><td>Array of pairs of event and queue identifiers</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a0057112dd786c5f667bf42a424679c89" title="Execution object stop, global.">em_stop_func_t()</a>, <a class="el" href="event__machine_8h.html#ad402338b2b52bff31bd84ba7b4e1434c" title="Execution object stop, core local.">em_stop_local_func_t()</a>, <a class="el" href="event__machine_8h.html#a97445f266a00782bb23fc2c464533d6d" title="Start Execution Object (EO).">em_eo_start()</a></dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>Method for the application to get the final stop status </dd></dl>

</div>
</div>
<a class="anchor" id="a13d21af31382ec2c3d45010645707e9c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int em_core_id </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Logical core id. </p>
<p>Returns the logical id of the current core. EM enumerates cores (or HW threads) to always start from 0 and be contiguous, i.e. valid core identifiers are 0...<a class="el" href="event__machine_8h.html#a84fa6ec801b82a586ff5e31693d3deb8" title="The number of cores running within the same EM instance (sharing the EM state).">em_core_count()</a>-1</p>
<dl class="section return"><dt>Returns</dt><dd>Current logical core id</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a84fa6ec801b82a586ff5e31693d3deb8" title="The number of cores running within the same EM instance (sharing the EM state).">em_core_count()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a0">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a0">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a0">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a0">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a84fa6ec801b82a586ff5e31693d3deb8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int em_core_count </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The number of cores running within the same EM instance (sharing the EM state). </p>
<dl class="section return"><dt>Returns</dt><dd>Number of EM cores (or HW threads)</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a13d21af31382ec2c3d45010645707e9c" title="Logical core id.">em_core_id()</a></dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000003">Todo:</a></b></dt><dd>CPU hot plugging support </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a2">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a2">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a2">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a2">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="a22fcb41f303628eebe4f0b45b6c64ab0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">em_event_t em_alloc </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>size</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a2f5b3fb43add8103da34b52cc1d0f2cc">em_event_type_t</a>&#160;</td>
          <td class="paramname"><em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#aded70bd6da9a02c082e82e56742a319e">em_pool_id_t</a>&#160;</td>
          <td class="paramname"><em>pool_id</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allocate an event. </p>
<p>Memory address of the allocated event is system specific and can depend on given pool id, event size and type. Returned event (handle) may refer to a memory buffer or a HW specific descriptor, i.e. the event structure is system specific.</p>
<p>Use em_event_pointer() to convert an event (handle) to a pointer to the event structure.</p>
<p>EM_EVENT_TYPE_SW with minor type 0 is reserved for direct portability. It is always guaranteed to return a 64-bit aligned contiguous data buffer, that can directly be used by the application up to the given size (no HW specific descriptors etc are visible).</p>
<p>EM_POOL_DEFAULT can be used as pool id if there's no need to use any specific memory pool.</p>
<p>Additionally it is guaranteed, that two separate buffers never share a cache line to avoid false sharing.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>Event size in octets </td></tr>
    <tr><td class="paramname">type</td><td>Event type to allocate </td></tr>
    <tr><td class="paramname">pool_id</td><td>Event pool id</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the allocated event or EM_EVENT_UNDEF on an error</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#ad4f97ba217518d967f8078c56023c4d4" title="Free an event.">em_free()</a>, <a class="el" href="event__machine_8h.html#aca4584a01b71429dfbb045342454b464" title="Send an event to a queue.">em_send()</a>, em_event_pointer(), <a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f" title="Receive event.">em_receive_func_t()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a13">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a11">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a19">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a11">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ad4f97ba217518d967f8078c56023c4d4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void em_free </td>
          <td>(</td>
          <td class="paramtype">em_event_t&#160;</td>
          <td class="paramname"><em>event</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free an event. </p>
<p>It is assumed the implementation can detect from which memory area/pool the event was originally allocated from.</p>
<p>Free transfers the ownership of the event to the system and application must not touch the event (or related memory buffers) after calling it.</p>
<p>Application must only free events it owns. For example, sender must not free an event after sending it.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">event</td><td>Event to be freed</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a22fcb41f303628eebe4f0b45b6c64ab0" title="Allocate an event.">em_alloc()</a>, <a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f" title="Receive event.">em_receive_func_t()</a></dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000004">Todo:</a></b></dt><dd>OK or not to free EM_EVENT_UNDEF? </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a17">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a23">test_appl_event_group.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a13">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="aca4584a01b71429dfbb045342454b464"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_send </td>
          <td>(</td>
          <td class="paramtype">em_event_t&#160;</td>
          <td class="paramname"><em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf">em_queue_t</a>&#160;</td>
          <td class="paramname"><em>queue</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send an event to a queue. </p>
<p>Event must have been allocated with <a class="el" href="event__machine_8h.html#a22fcb41f303628eebe4f0b45b6c64ab0" title="Allocate an event.">em_alloc()</a>, or received via receive-function. Sender must not touch the event after calling em_send as the ownership is moved to system and then to the receiver. If return status is <em>not</em> EM_OK, the ownership has not moved and the application is still responsible for the event (e.g. may free it).</p>
<p>EM does not define guaranteed event delivery, i.e. EM_OK return value only means the event was accepted for delivery. It could still be lost during the delivery (e.g. due to disabled/removed queue, queue or system congestion, etc).</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">event</td><td>Event to be sent </td></tr>
    <tr><td class="paramname">queue</td><td>Destination queue</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful (accepted for delivery).</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a22fcb41f303628eebe4f0b45b6c64ab0" title="Allocate an event.">em_alloc()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a14">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a12">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a20">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a12">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="af80e7173968f134ff3a9df6509c17009"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void em_atomic_processing_end </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Release atomic processing context. </p>
<p>When an event was received from an atomic queue, the function can be used to release the atomic context before receive function return. After the call, scheduler is allowed to schedule another event from the same queue to another core. This increases parallelism and may improve performance - however the exclusive processing and ordering (!) might be lost after the call.</p>
<p>Can only be called from within the event receive function!</p>
<p>The call is ignored, if current event was not received from an atomic queue.</p>
<p>Pseudo-code example: </p>
<div class="fragment"><div class="line">receive_func(<span class="keywordtype">void</span>* eo_ctx, em_event_t event, <a class="code" href="event__machine__types_8h.html#a2f5b3fb43add8103da34b52cc1d0f2cc" title="Event type.">em_event_type_t</a> type, <a class="code" href="event__machine__types_8h.html#a43cb5a167efa542d81180a54915d99bf" title="Queue identifier.">em_queue_t</a> queue, <span class="keywordtype">void</span>* q_ctx);</div>
<div class="line">{</div>
<div class="line">    <span class="keywordflow">if</span>(is_my_atomic_queue(q_ctx))</div>
<div class="line">    {</div>
<div class="line">        update_sequence_number(event);  <span class="comment">// this needs to be done atomically</span></div>
<div class="line">        <a class="code" href="event__machine_8h.html#af80e7173968f134ff3a9df6509c17009" title="Release atomic processing context.">em_atomic_processing_end</a>();</div>
<div class="line">        ...                             <span class="comment">// do other processing (potentially) in parallel</span></div>
<div class="line">    }</div>
<div class="line"> }</div>
</div><!-- fragment --><dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af132a04504b399fd5f59521f4f16306f" title="Receive event.">em_receive_func_t()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="af7332965c5deaa69411136e8d36089c6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_register_error_handler </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9">em_error_handler_t</a>&#160;</td>
          <td class="paramname"><em>handler</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Register the global error handler. </p>
<p>The global error handler is called on errors (or <a class="el" href="event__machine_8h.html#a1d45cd3fa718f99bce956904b5e081de" title="Report an error.">em_error()</a> calls) outside of any EO context or if there's no EO specific error handler registered. Note, the function will override any previously registered global error handler.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">handler</td><td>Error handler.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#a1020917f6061bf56da36773946eece72" title="Register EO specific error handler.">em_eo_register_error_handler()</a>, <a class="el" href="event__machine_8h.html#ab6b469100e5f60670a742d944a6f530b" title="Unregister the global error handler.">em_unregister_error_handler()</a>, <a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9" title="Error handler.">em_error_handler_t()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a3">test_appl_error.c</a>.</dd>
</dl>
</div>
</div>
<a class="anchor" id="ab6b469100e5f60670a742d944a6f530b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a> em_unregister_error_handler </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Unregister the global error handler. </p>
<p>Removes previously registered global error handler.</p>
<dl class="section return"><dt>Returns</dt><dd>EM_OK if successful.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af7332965c5deaa69411136e8d36089c6" title="Register the global error handler.">em_register_error_handler()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="a1d45cd3fa718f99bce956904b5e081de"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void em_error </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a125a101c5db94235eb758c8c32ab2628">em_status_t</a>&#160;</td>
          <td class="paramname"><em>error</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="event__machine__types_8h.html#a5b0a5fb6ffe7f0fdb90caa388070dff3">em_escope_t</a>&#160;</td>
          <td class="paramname"><em>escope</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Report an error. </p>
<p>Reported errors are handled by the appropriate (EO specific or the global) error handler.</p>
<p>Depending on the error/scope/implementation, the function call may not return.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">error</td><td>Error code </td></tr>
    <tr><td class="paramname">escope</td><td>Error scope. Identifies the scope for interpreting the error code and variable arguments. </td></tr>
    <tr><td class="paramname">...</td><td>Variable number and type of arguments</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="event__machine_8h.html#af7332965c5deaa69411136e8d36089c6" title="Register the global error handler.">em_register_error_handler()</a>, <a class="el" href="event__machine_8h.html#a41d418a82bfc4e80f7ad5ae73d5a4bd9" title="Error handler.">em_error_handler_t()</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="test_appl_error_8c-example.html#a1">test_appl_error.c</a>, <a class="el" href="test_appl_event_group_8c-example.html#a1">test_appl_event_group.c</a>, <a class="el" href="test_appl_hello_8c-example.html#a1">test_appl_hello.c</a>, and <a class="el" href="test_appl_perf_8c-example.html#a1">test_appl_perf.c</a>.</dd>
</dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="event__machine_8h.html">event_machine.h</a></li>
    <li class="footer">Generated on Wed Aug 7 2013 15:17:39 for Open Event Machine API by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.3.1 </li>
  </ul>
</div>
</body>
</html>
